
import java.util.Iterator;


/**
 * Test program for random queue. Code by Thore Husfeldt.
 */
public class TestRandomQueue {
    public static void main(String args[])
    {
        // Build a queue containing the Integers 1,2,...,6:
        RandomQueue<Integer> Q= new RandomQueue<Integer>();
        for (int i = 1; i < 7; ++i) Q.enqueue(i); // autoboxing! cool!
        
        System.out.println(Q.toString());
 
        // Print 30 die rolls to standard output
        StdOut.print("Some die rolls: ");
        for (int i = 1; i < 30; ++i) StdOut.print(Q.sample() +" ");
        StdOut.println();

        // Let's be more serious: do they really behave like die rolls?
        int[] rolls= new int [10000];
        for (int i = 0; i < 10000; ++i)
            rolls[i] = Q.sample(); // autounboxing! Also cool!
        StdOut.printf("Mean (should be around 3.5): %5.4f\n", StdStats.mean(rolls));
        StdOut.printf("Standard deviation (should be around 1.7): %5.4f\n",
                      StdStats.stddev(rolls));
    
        // Let's look at the iterator. First, we make a queue of colours:
    
        RandomQueue<String> C= new RandomQueue<String>();
        C.enqueue("red"); C.enqueue("blue"); C.enqueue("green"); C.enqueue("yellow"); 

        Iterator I= C.iterator();
        Iterator J= C.iterator();

        StdOut.print("Two colours from first shuffle: ");
        StdOut.print(I.next()+" ");
        StdOut.print(I.next()+" ");
    
        StdOut.print("\nEntire second shuffle: ");
        while (J.hasNext()) StdOut.print(J.next()+" ");

        StdOut.print("\nRemaining two colours from first shuffle: ");
        StdOut.print(I.next()+" ");
        StdOut.println(I.next());
    }
}